package binding

import (
	"encoding/json"
	"errors"
	"net/http"
)

var ErrInvalidRequest = errors.New("invalid request")

type JsonBind struct{}

func (j JsonBind) Name() string {
	return "JSON"
}

func (j JsonBind) Bind(req *http.Request, any interface{}) error {
	if req == nil || req.Body == nil {
		return ErrInvalidRequest
	}
	decoder := json.NewDecoder(req.Body)
	return decoder.Decode(any)
}

/*
decoder.DisallowUnknownFields() 是 Go 语言 json.Deccoder 结构体的一个方法。当这个方法被调用，解码器在遇到 JSON 对象中存在但结构体中不存在的字段时会报错。
默认情况下，如果 JSON 数据包含结构体类型没有定义的字段，json.Decoder 会忽略这些字段，并且正常地解析其他字段。
然而，有时你可能希望确保 JSON 数据中的所有字段都能被映射到目标类型：也就是说，如果 JSON 数据中存在目标类型中没有的字段，你希望 Decode 方法返回一个错误
*/
